package com.eshop.modules.user.domain;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
import com.eshop.domain.BaseDomain;
import com.eshop.modules.user.service.dto.WechatUserDto;
import java.math.BigDecimal;
import java.util.Date;

@TableName(autoResultMap = true, value = "eshop_user")
public class ShopUser extends BaseDomain {
    private String addIp;
    private String addres;
    private Integer adminid;
    private String avatar;
    private String birthday;
    private BigDecimal brokeragePrice;
    private String cardId;
    private Integer groupId;
    private BigDecimal integral;
    private Integer isPromoter;
    private String lastIp;
    private Integer level;
    private String loginType;
    private String mark;
    private String nickname;
    private BigDecimal nowMoney;
    private Integer partnerId;
    private String password;
    private Integer payCount;
    private String phone;
    private String realName;
    private Integer signNum;
    private Integer spreadCount;
    private Date spreadTime;
    private Long spreadUid;
    private Integer status;
    @TableId(type = IdType.AUTO, value = "uid")
    private Long uid;
    private String userType;
    private String username;
    @TableField(typeHandler = FastjsonTypeHandler.class)
    private WechatUserDto wxProfile;

    public static class ShopUserBuilder {
        private String addIp;
        private String addres;
        private Integer adminid;
        private String avatar;
        private String birthday;
        private BigDecimal brokeragePrice;
        private String cardId;
        private Integer groupId;
        private BigDecimal integral;
        private Integer isPromoter;
        private String lastIp;
        private Integer level;
        private String loginType;
        private String mark;
        private String nickname;
        private BigDecimal nowMoney;
        private Integer partnerId;
        private String password;
        private Integer payCount;
        private String phone;
        private String realName;
        private Integer signNum;
        private Integer spreadCount;
        private Date spreadTime;
        private Long spreadUid;
        private Integer status;
        private Long uid;
        private String userType;
        private String username;
        private WechatUserDto wxProfile;

        ShopUserBuilder() {
        }

        public ShopUserBuilder addIp(String addIp2) {
            this.addIp = addIp2;
            return this;
        }

        public ShopUserBuilder addres(String addres2) {
            this.addres = addres2;
            return this;
        }

        public ShopUserBuilder adminid(Integer adminid2) {
            this.adminid = adminid2;
            return this;
        }

        public ShopUserBuilder avatar(String avatar2) {
            this.avatar = avatar2;
            return this;
        }

        public ShopUserBuilder birthday(String birthday2) {
            this.birthday = birthday2;
            return this;
        }

        public ShopUserBuilder brokeragePrice(BigDecimal brokeragePrice2) {
            this.brokeragePrice = brokeragePrice2;
            return this;
        }

        public ShopUser build() {
            return new ShopUser(this.uid, this.username, this.password, this.realName, this.birthday, this.cardId, this.mark, this.partnerId, this.groupId, this.nickname, this.avatar, this.phone, this.addIp, this.lastIp, this.nowMoney, this.brokeragePrice, this.integral, this.signNum, this.status, this.level, this.spreadUid, this.spreadTime, this.userType, this.isPromoter, this.payCount, this.spreadCount, this.addres, this.adminid, this.loginType, this.wxProfile);
        }

        public ShopUserBuilder cardId(String cardId2) {
            this.cardId = cardId2;
            return this;
        }

        public ShopUserBuilder groupId(Integer groupId2) {
            this.groupId = groupId2;
            return this;
        }

        public ShopUserBuilder integral(BigDecimal integral2) {
            this.integral = integral2;
            return this;
        }

        public ShopUserBuilder isPromoter(Integer isPromoter2) {
            this.isPromoter = isPromoter2;
            return this;
        }

        public ShopUserBuilder lastIp(String lastIp2) {
            this.lastIp = lastIp2;
            return this;
        }

        public ShopUserBuilder level(Integer level2) {
            this.level = level2;
            return this;
        }

        public ShopUserBuilder loginType(String loginType2) {
            this.loginType = loginType2;
            return this;
        }

        public ShopUserBuilder mark(String mark2) {
            this.mark = mark2;
            return this;
        }

        public ShopUserBuilder nickname(String nickname2) {
            this.nickname = nickname2;
            return this;
        }

        public ShopUserBuilder nowMoney(BigDecimal nowMoney2) {
            this.nowMoney = nowMoney2;
            return this;
        }

        public ShopUserBuilder partnerId(Integer partnerId2) {
            this.partnerId = partnerId2;
            return this;
        }

        public ShopUserBuilder password(String password2) {
            this.password = password2;
            return this;
        }

        public ShopUserBuilder payCount(Integer payCount2) {
            this.payCount = payCount2;
            return this;
        }

        public ShopUserBuilder phone(String phone2) {
            this.phone = phone2;
            return this;
        }

        public ShopUserBuilder realName(String realName2) {
            this.realName = realName2;
            return this;
        }

        public ShopUserBuilder signNum(Integer signNum2) {
            this.signNum = signNum2;
            return this;
        }

        public ShopUserBuilder spreadCount(Integer spreadCount2) {
            this.spreadCount = spreadCount2;
            return this;
        }

        public ShopUserBuilder spreadTime(Date spreadTime2) {
            this.spreadTime = spreadTime2;
            return this;
        }

        public ShopUserBuilder spreadUid(Long spreadUid2) {
            this.spreadUid = spreadUid2;
            return this;
        }

        public ShopUserBuilder status(Integer status2) {
            this.status = status2;
            return this;
        }

        public String toString() {
            return "ShopUser.ShopUserBuilder(uid=" + this.uid + ", username=" + this.username + ", password=" + this.password + ", realName=" + this.realName + ", birthday=" + this.birthday + ", cardId=" + this.cardId + ", mark=" + this.mark + ", partnerId=" + this.partnerId + ", groupId=" + this.groupId + ", nickname=" + this.nickname + ", avatar=" + this.avatar + ", phone=" + this.phone + ", addIp=" + this.addIp + ", lastIp=" + this.lastIp + ", nowMoney=" + this.nowMoney + ", brokeragePrice=" + this.brokeragePrice + ", integral=" + this.integral + ", signNum=" + this.signNum + ", status=" + this.status + ", level=" + this.level + ", spreadUid=" + this.spreadUid + ", spreadTime=" + this.spreadTime + ", userType=" + this.userType + ", isPromoter=" + this.isPromoter + ", payCount=" + this.payCount + ", spreadCount=" + this.spreadCount + ", addres=" + this.addres + ", adminid=" + this.adminid + ", loginType=" + this.loginType + ", wxProfile=" + this.wxProfile + ")";
        }

        public ShopUserBuilder uid(Long uid2) {
            this.uid = uid2;
            return this;
        }

        public ShopUserBuilder userType(String userType2) {
            this.userType = userType2;
            return this;
        }

        public ShopUserBuilder username(String username2) {
            this.username = username2;
            return this;
        }

        public ShopUserBuilder wxProfile(WechatUserDto wxProfile2) {
            this.wxProfile = wxProfile2;
            return this;
        }
    }

    public static ShopUserBuilder builder() {
        return new ShopUserBuilder();
    }

    public ShopUser setAddIp(String addIp2) {
        this.addIp = addIp2;
        return this;
    }

    public ShopUser setAddres(String addres2) {
        this.addres = addres2;
        return this;
    }

    public ShopUser setAdminid(Integer adminid2) {
        this.adminid = adminid2;
        return this;
    }

    public ShopUser setAvatar(String avatar2) {
        this.avatar = avatar2;
        return this;
    }

    public ShopUser setBirthday(String birthday2) {
        this.birthday = birthday2;
        return this;
    }

    public ShopUser setBrokeragePrice(BigDecimal brokeragePrice2) {
        this.brokeragePrice = brokeragePrice2;
        return this;
    }

    public ShopUser setCardId(String cardId2) {
        this.cardId = cardId2;
        return this;
    }

    public ShopUser setGroupId(Integer groupId2) {
        this.groupId = groupId2;
        return this;
    }

    public ShopUser setIntegral(BigDecimal integral2) {
        this.integral = integral2;
        return this;
    }

    public ShopUser setIsPromoter(Integer isPromoter2) {
        this.isPromoter = isPromoter2;
        return this;
    }

    public ShopUser setLastIp(String lastIp2) {
        this.lastIp = lastIp2;
        return this;
    }

    public ShopUser setLevel(Integer level2) {
        this.level = level2;
        return this;
    }

    public ShopUser setLoginType(String loginType2) {
        this.loginType = loginType2;
        return this;
    }

    public ShopUser setMark(String mark2) {
        this.mark = mark2;
        return this;
    }

    public ShopUser setNickname(String nickname2) {
        this.nickname = nickname2;
        return this;
    }

    public ShopUser setNowMoney(BigDecimal nowMoney2) {
        this.nowMoney = nowMoney2;
        return this;
    }

    public ShopUser setPartnerId(Integer partnerId2) {
        this.partnerId = partnerId2;
        return this;
    }

    public ShopUser setPassword(String password2) {
        this.password = password2;
        return this;
    }

    public ShopUser setPayCount(Integer payCount2) {
        this.payCount = payCount2;
        return this;
    }

    public ShopUser setPhone(String phone2) {
        this.phone = phone2;
        return this;
    }

    public ShopUser setRealName(String realName2) {
        this.realName = realName2;
        return this;
    }

    public ShopUser setSignNum(Integer signNum2) {
        this.signNum = signNum2;
        return this;
    }

    public ShopUser setSpreadCount(Integer spreadCount2) {
        this.spreadCount = spreadCount2;
        return this;
    }

    public ShopUser setSpreadTime(Date spreadTime2) {
        this.spreadTime = spreadTime2;
        return this;
    }

    public ShopUser setSpreadUid(Long spreadUid2) {
        this.spreadUid = spreadUid2;
        return this;
    }

    public ShopUser setStatus(Integer status2) {
        this.status = status2;
        return this;
    }

    public ShopUser setUid(Long uid2) {
        this.uid = uid2;
        return this;
    }

    public ShopUser setUserType(String userType2) {
        this.userType = userType2;
        return this;
    }

    public ShopUser setUsername(String username2) {
        this.username = username2;
        return this;
    }

    public ShopUser setWxProfile(WechatUserDto wxProfile2) {
        this.wxProfile = wxProfile2;
        return this;
    }

    public ShopUser() {
    }

    public ShopUser(Long uid2, String username2, String password2, String realName2, String birthday2, String cardId2, String mark2, Integer partnerId2, Integer groupId2, String nickname2, String avatar2, String phone2, String addIp2, String lastIp2, BigDecimal nowMoney2, BigDecimal brokeragePrice2, BigDecimal integral2, Integer signNum2, Integer status2, Integer level2, Long spreadUid2, Date spreadTime2, String userType2, Integer isPromoter2, Integer payCount2, Integer spreadCount2, String addres2, Integer adminid2, String loginType2, WechatUserDto wxProfile2) {
        this.uid = uid2;
        this.username = username2;
        this.password = password2;
        this.realName = realName2;
        this.birthday = birthday2;
        this.cardId = cardId2;
        this.mark = mark2;
        this.partnerId = partnerId2;
        this.groupId = groupId2;
        this.nickname = nickname2;
        this.avatar = avatar2;
        this.phone = phone2;
        this.addIp = addIp2;
        this.lastIp = lastIp2;
        this.nowMoney = nowMoney2;
        this.brokeragePrice = brokeragePrice2;
        this.integral = integral2;
        this.signNum = signNum2;
        this.status = status2;
        this.level = level2;
        this.spreadUid = spreadUid2;
        this.spreadTime = spreadTime2;
        this.userType = userType2;
        this.isPromoter = isPromoter2;
        this.payCount = payCount2;
        this.spreadCount = spreadCount2;
        this.addres = addres2;
        this.adminid = adminid2;
        this.loginType = loginType2;
        this.wxProfile = wxProfile2;
    }

    public String toString() {
        return "ShopUser(uid=" + getUid() + ", username=" + getUsername() + ", password=" + getPassword() + ", realName=" + getRealName() + ", birthday=" + getBirthday() + ", cardId=" + getCardId() + ", mark=" + getMark() + ", partnerId=" + getPartnerId() + ", groupId=" + getGroupId() + ", nickname=" + getNickname() + ", avatar=" + getAvatar() + ", phone=" + getPhone() + ", addIp=" + getAddIp() + ", lastIp=" + getLastIp() + ", nowMoney=" + getNowMoney() + ", brokeragePrice=" + getBrokeragePrice() + ", integral=" + getIntegral() + ", signNum=" + getSignNum() + ", status=" + getStatus() + ", level=" + getLevel() + ", spreadUid=" + getSpreadUid() + ", spreadTime=" + getSpreadTime() + ", userType=" + getUserType() + ", isPromoter=" + getIsPromoter() + ", payCount=" + getPayCount() + ", spreadCount=" + getSpreadCount() + ", addres=" + getAddres() + ", adminid=" + getAdminid() + ", loginType=" + getLoginType() + ", wxProfile=" + getWxProfile() + ")";
    }

    public Long getUid() {
        return this.uid;
    }

    public String getUsername() {
        return this.username;
    }

    public String getPassword() {
        return this.password;
    }

    public String getRealName() {
        return this.realName;
    }

    public String getBirthday() {
        return this.birthday;
    }

    public String getCardId() {
        return this.cardId;
    }

    public String getMark() {
        return this.mark;
    }

    public Integer getPartnerId() {
        return this.partnerId;
    }

    public Integer getGroupId() {
        return this.groupId;
    }

    public String getNickname() {
        return this.nickname;
    }

    public String getAvatar() {
        return this.avatar;
    }

    public String getPhone() {
        return this.phone;
    }

    public String getAddIp() {
        return this.addIp;
    }

    public String getLastIp() {
        return this.lastIp;
    }

    public BigDecimal getNowMoney() {
        return this.nowMoney;
    }

    public BigDecimal getBrokeragePrice() {
        return this.brokeragePrice;
    }

    public BigDecimal getIntegral() {
        return this.integral;
    }

    public Integer getSignNum() {
        return this.signNum;
    }

    public Integer getStatus() {
        return this.status;
    }

    public Integer getLevel() {
        return this.level;
    }

    public Long getSpreadUid() {
        return this.spreadUid;
    }

    public Date getSpreadTime() {
        return this.spreadTime;
    }

    public String getUserType() {
        return this.userType;
    }

    public Integer getIsPromoter() {
        return this.isPromoter;
    }

    public Integer getPayCount() {
        return this.payCount;
    }

    public Integer getSpreadCount() {
        return this.spreadCount;
    }

    public String getAddres() {
        return this.addres;
    }

    public Integer getAdminid() {
        return this.adminid;
    }

    public String getLoginType() {
        return this.loginType;
    }

    public WechatUserDto getWxProfile() {
        return this.wxProfile;
    }

    public void copy(ShopUser source) {
        BeanUtil.copyProperties(source, this, CopyOptions.create().setIgnoreNullValue(true));
    }
}
